Robot Framework 是一個成熟且廣泛應用的"開源"自動化測試框架,其主要特點是基於關鍵字驅動(Keyword-Driven)的測試方法,意思是指通過關鍵字來描述測試用例。這使得測試用例具有高度可讀性,甚至非技術人員也能夠理解和編寫測試,撰寫起來相當的口語化。得益於關鍵字驅動的設計,測試人員可以像在撰寫測試計劃一樣,透過撰寫一步步的測試步驟,逐步完成自動化測試。同時,Robot Framework 擁有強大的社群支持,提供了許多實用的第三方庫,如 SeleniumLibrary, Browser 用於網頁測試、AppiumLibrary 用於移動應用測試等
官方 Github:https://github.com/robotframework/robotframework
雖然 Robot Framework 有許多優點,但也存在一些缺點:
接著我們來了解 Robot Framework 的語法吧!
接下來,我們一起來了解 Robot Framework 的語法結構。你會發現,它與傳統的程式語言有所不同,沒有先寫 Class 再寫 Func 的流程,而是使用特有的格式來組織測試用例。這正是 Robot Framework 透過關鍵字驅動 (Keyword-Driven Testing) 完成自動化測試的方式。
當我們要撰寫一個 Robot Framework 測試時,會需要創建一個副檔名為 .robot
的檔案,像是 test.robot
,而在每一個 .robot
檔案中,大致上可以分成四個區塊,如下方展示了一個以 Robot Framework 撰寫的測試範例:
*** Settings ***
Documentation My First Robot Framework
*** Variables ***
${hello_world} = Hello World
*** Test Cases ***
Test Case 001
${sum} = Sum Two Number num1=1 num2=2
Should Be Equal As Integers first=${sum} second=${3}
Test Case 002
${sum} = Sum Two Number num1=3 num2=3
Should Be Equal As Integers first=${sum} second=${5}
*** Keywords ***
Sum Two Number
[Arguments] ${num1} ${num2}
${sum} = Evaluate ${num1}+${num2}
RETURN ${sum}
從上面的程式碼中,我們可以發現有四個特殊的區塊,分別由 ***
包圍。在 Robot Framework 中,這些區塊稱為 Test Data Sections,用來區分每個區塊的功能。以下是四個常見的區塊:
***Settings***
這個區塊主要用來做測試初始化相關的設定,如匯入測試需要使用到的 Libraries,或是定義測試案例的 Timeout、以及設定測試的 Setup 和 Teardown,透過下方的範例我們可以看見,我們先匯入了一個 AppiumLibrary 的第三方 Library,接著設定每隻 Test Case 的 Test Timeout
是 300 秒,意思是指當今天當前的測試案例執行時間超過 300 秒時,便會直接觸發 Fail 後執行下一隻 Case,Suite Setup
則是整個 Test Suite 開始時的前置作業,以及在 Suite Teardown
中執行 Close All Applications
作為測試的收尾。
*** Settings ***
Library AppiumLibrary
Test Timeout 300s
Suite Setup Set Appium Timeout 100s
Suite Teardown Close All Applications
***Variables***
用來宣告測試需要的變數,變數的作用範圍僅限於當前檔案,而不是全域變數。Robot Framework 提供了多種變數類型,如 ${NAME}
用於一般變數,@{NAME}
用於 List 型態,&{NAME}
用於 Dict 型態,需要注意的是,一但我們定義了變數可以接受的型態,在後續的使用中便都會對這些參數的型態進行驗。
*** Variables ***
${hello_world} Hello World
@{fruit} apple banana
&{stock} tsmc=2330
***Test Cases***
這邊就是重點啦!我們會將我們的測試案例寫在這個,格式會是第一行是 test case 的名稱,這個名稱最後會呈現在報告上,接著縮排後就是我們的測試步驟,以下面的程式碼為例,在下面的案例中,我們創建了兩隻 Test Case,分別為 Test Case 001
及 Test Case 002
,測試的流程則是透過 Sum Two Number
將指定的兩個數相加,最後透過 Should Be Equal As Integers
來驗證結果是否正確:
*** Test Cases ***
Test Case 001
${sum} = Sum Two Number num1=1 num2=2
Should Be Equal As Integers first=${sum} second=${3}
Test Case 002
${sum} = Sum Two Number num1=1 num2=2
Should Be Equal As Integers first=${sum} second=${5}
***Keywords***
類似於 Python 的 Function,用於將常使用的步驟包裝成一個 Keyword,方便在不同測試案例間重複使用。
Sum Two Number
[Arguments] ${num1} ${num2}
${sum} = Evaluate ${num1}+${num2}
RETURN ${sum}
眼尖的夥伴們可能會發現,變數和關鍵字之間總是有空格。沒錯,這是 Robot Framework 用來區分 Keyword 和不同參數的方式,通常使用兩個以上的空白或一個 Tab 來做區分。
# 2 個空白
Sum Two Number num1=3 num2=3
# 1 個 tab
Sum Two Number num1=3 num2=3
如果大家已經有程式基礎的話,看到 Robot Framework 的寫法大概率會被噁心到哈哈,但是其實上手後會發現 Robot Framework 還是有他的優點的,尤其是龐大的社群撐起的第三方庫,完全就是站在巨人的肩膀上在做開發,通過這一章節,我們了解了 Robot Framework 的基本概念及其語法結構。接下來,我們將實際操作一個 Robot Framework 的測試,幫助大家更好地掌握這一強大的工具。